﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using SVC_DAL;

namespace SVC_BLL
{
    public class ClienteBLL
    {
        public int cli_codigo { get; set; }
        public String cli_nome { get; set; }
        public int cli_idade { get; set; }
        public DateTime cli_data_nascimento { get; set; }
        public String cli_rg { get; set; }
        public String cli_cpf { get; set; }
        public String cli_logradouro { get; set; }
        public String cli_numero { get; set; }
        public String cli_complemento { get; set; }
        public String cli_bairro { get; set; }
        public int cid_codigo { get; set; }
        public String cli_razao_social { get; set; }
        public String cli_cnpj { get; set; }
        public String cli_ie { get; set; }
        public DateTime cli_data_fundacao { get; set; }
        public String cli_tipo_pessoa { get; set; }
        public String  cli_telefone { get; set; }
        public String cli_celular { get; set; }
        public String cli_calJuros { get; set; }
        public Double cli_limiteCredito { get; set; }
        public Double cli_limiteMensal { get; set; }

        ClienteDAL objDAL = null;

        public ClienteBLL()
        { }

        public void limpar()
        {
            this.cli_codigo = 0;
            this.cli_nome = null;
            this.cli_idade = 0;
            this.cli_data_nascimento = DateTime.Now.Date;
            this.cli_rg = null;
            this.cli_cpf = null;
            this.cli_logradouro = null;
            this.cli_numero = null;
            this.cli_complemento = null;
            this.cli_bairro = null;
            this.cid_codigo = 0;
            this.cli_razao_social = null;
            this.cli_cnpj = null;
            this.cli_ie = null;
            this.cli_data_fundacao = DateTime.Now.Date;
            this.cli_tipo_pessoa = null;
            this.cli_telefone = null;
            this.cli_celular = null;
            this.cli_calJuros = null;
            this.cli_limiteCredito = 0;
            this.cli_limiteMensal = 0;
        }

        public void inserir()
        {
            try
            {
                objDAL = new ClienteDAL();
                objDAL.inserir(this.cli_tipo_pessoa, this.cli_nome, this.cli_idade, this.cli_data_nascimento,
                    this.cli_rg, this.cli_cpf, this.cli_logradouro, this.cli_numero, this.cli_complemento,
                    this.cli_bairro, this.cid_codigo, this.cli_razao_social, this.cli_cnpj, this.cli_ie,
                    this.cli_data_fundacao,this.cli_telefone,this.cli_celular,this.cli_calJuros,this.cli_limiteCredito,this.cli_limiteMensal);
                objDAL = null;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void alterar()
        {
            try
            {
                objDAL = new ClienteDAL();
                objDAL.alterar(this.cli_codigo, this.cli_tipo_pessoa, this.cli_nome, this.cli_idade, this.cli_data_nascimento,
                    this.cli_rg, this.cli_cpf, this.cli_logradouro, this.cli_numero, this.cli_complemento,
                    this.cli_bairro, this.cid_codigo, this.cli_razao_social, this.cli_cnpj, this.cli_ie,
                    this.cli_data_fundacao, this.cli_telefone, this.cli_celular, this.cli_calJuros, this.cli_limiteCredito,this.cli_limiteMensal);
                objDAL = null;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void excluir()
        {
            try
            {
                objDAL = new ClienteDAL();
                objDAL.excluir(this.cli_codigo);
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void localizar()
        {
            try
            {
                objDAL = new ClienteDAL();
                this.cli_codigo= objDAL.localizar(this.cli_codigo);
                objDAL = null;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void localizar(String descricao, String atributo)
        {

            try
            {
                DataTable tab;
                objDAL = new ClienteDAL();
                tab = objDAL.localizar(descricao, atributo);
                if (tab.Rows.Count > 0)
                {
                    if (tab.Rows[0]["cli_tipo_pessoa"].ToString() == "Pessoa Física") { 
                       //pessoa física   
                        int idade;
                        DateTime dataNascimento;
                        this.cli_codigo = int.Parse(tab.Rows[0]["cli_codigo"].ToString());
                        this.cli_nome = tab.Rows[0]["cli_nome"].ToString();
                        int.TryParse(tab.Rows[0]["cli_idade"].ToString(),out idade);
                        DateTime.TryParse(tab.Rows[0]["cli_data_nascimento"].ToString(), out dataNascimento);
                        this.cli_rg = tab.Rows[0]["cli_rg"].ToString();
                        this.cli_cpf = tab.Rows[0]["cli_cpf"].ToString();
                        this.cli_logradouro = tab.Rows[0]["cli_logradouro"].ToString();
                        this.cli_numero = tab.Rows[0]["cli_numero"].ToString();
                        this.cli_complemento = tab.Rows[0]["cli_complemento"].ToString();
                        this.cli_bairro = tab.Rows[0]["cli_bairro"].ToString();
                        this.cid_codigo = int.Parse(tab.Rows[0]["cid_codigo"].ToString());
                        this.cli_tipo_pessoa = tab.Rows[0]["cli_tipo_pessoa"].ToString();
                        this.cli_telefone = tab.Rows[0]["cli_telefone"].ToString();
                        this.cli_celular = tab.Rows[0]["cli_celular"].ToString();
                        this.cli_calJuros = tab.Rows[0]["cli_calJuros"].ToString();
                        this.cli_limiteCredito = Double.Parse(tab.Rows[0]["cli_limiteCredito"].ToString());
                        this.cli_limiteMensal = Double.Parse(tab.Rows[0]["cli_limiteMensal"].ToString());
                        this.cli_idade = idade;
                        this.cli_data_nascimento = dataNascimento;
                    }
                    else if (tab.Rows[0]["cli_tipo_pessoa"].ToString() == "Pessoa Jurídica")
                    {
                       //pessoa jurídica
                        DateTime dataFundacao;
                        this.cli_codigo = int.Parse(tab.Rows[0]["cli_codigo"].ToString());
                        this.cli_razao_social = tab.Rows[0]["cli_razao_social"].ToString();
                        DateTime.TryParse(tab.Rows[0]["cli_data_fundacao"].ToString(), out dataFundacao);
                        this.cli_ie = tab.Rows[0]["cli_ie"].ToString();
                        this.cli_cnpj = tab.Rows[0]["cli_cnpj"].ToString();
                        this.cli_logradouro = tab.Rows[0]["cli_logradouro"].ToString();
                        this.cli_numero = tab.Rows[0]["cli_numero"].ToString();
                        this.cli_complemento = tab.Rows[0]["cli_complemento"].ToString();
                        this.cli_bairro = tab.Rows[0]["cli_bairro"].ToString();
                        this.cid_codigo = int.Parse(tab.Rows[0]["cid_codigo"].ToString());
                        this.cli_tipo_pessoa = tab.Rows[0]["cli_tipo_pessoa"].ToString();
                        this.cli_telefone = tab.Rows[0]["cli_telefone"].ToString();
                        this.cli_celular = tab.Rows[0]["cli_celular"].ToString();
                        this.cli_calJuros = tab.Rows[0]["cli_calJuros"].ToString();
                        this.cli_limiteCredito = Double.Parse(tab.Rows[0]["cli_limiteCredito"].ToString());
                        this.cli_limiteMensal = Double.Parse(tab.Rows[0]["cli_limiteMensal"].ToString());
                        this.cli_data_fundacao = dataFundacao;
                    }
                }
                objDAL = null;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void localizarLeave(String descricao, String atributo)
        {

            try
            {
                DataTable tab;
                objDAL = new ClienteDAL();
                tab = objDAL.localizarLeave(descricao, atributo);
                if (tab.Rows.Count > 0)
                {
                    if (tab.Rows[0]["cli_tipo_pessoa"].ToString() == "Pessoa Física")
                    {
                        //pessoa física
                        int idade;
                        DateTime dataNascimento;
                        this.cli_codigo = int.Parse(tab.Rows[0]["cli_codigo"].ToString());
                        this.cli_nome = tab.Rows[0]["cli_nome"].ToString();
                        int.TryParse(tab.Rows[0]["cli_idade"].ToString(), out idade);
                        DateTime.TryParse(tab.Rows[0]["cli_data_nascimento"].ToString(), out dataNascimento);
                        this.cli_rg = tab.Rows[0]["cli_rg"].ToString();
                        this.cli_cpf = tab.Rows[0]["cli_cpf"].ToString();
                        this.cli_logradouro = tab.Rows[0]["cli_logradouro"].ToString();
                        this.cli_numero = tab.Rows[0]["cli_numero"].ToString();
                        this.cli_complemento = tab.Rows[0]["cli_complemento"].ToString();
                        this.cli_bairro = tab.Rows[0]["cli_bairro"].ToString();
                        this.cid_codigo = int.Parse(tab.Rows[0]["cid_codigo"].ToString());
                        this.cli_tipo_pessoa = tab.Rows[0]["cli_tipo_pessoa"].ToString();
                        this.cli_telefone = tab.Rows[0]["cli_telefone"].ToString();
                        this.cli_celular = tab.Rows[0]["cli_celular"].ToString();
                        this.cli_calJuros = tab.Rows[0]["cli_calJuros"].ToString();
                        this.cli_limiteCredito = Double.Parse(tab.Rows[0]["cli_limiteCredito"].ToString());
                        this.cli_limiteMensal = Double.Parse(tab.Rows[0]["cli_limiteMensal"].ToString());
                        this.cli_idade = idade;
                        this.cli_data_nascimento = dataNascimento;
                    }
                    else if (tab.Rows[0]["cli_tipo_pessoa"].ToString() == "Pessoa Jurídica")
                    {
                        //pessoa jurídica
                        DateTime dataFundacao;
                        this.cli_codigo = int.Parse(tab.Rows[0]["cli_codigo"].ToString());
                        this.cli_razao_social = tab.Rows[0]["cli_razao_social"].ToString();
                        DateTime.TryParse(tab.Rows[0]["cli_data_fundacao"].ToString(), out dataFundacao);
                        this.cli_ie = tab.Rows[0]["cli_ie"].ToString();
                        this.cli_cnpj = tab.Rows[0]["cli_cnpj"].ToString();
                        this.cli_logradouro = tab.Rows[0]["cli_logradouro"].ToString();
                        this.cli_numero = tab.Rows[0]["cli_numero"].ToString();
                        this.cli_complemento = tab.Rows[0]["cli_complemento"].ToString();
                        this.cli_bairro = tab.Rows[0]["cli_bairro"].ToString();
                        this.cid_codigo = int.Parse(tab.Rows[0]["cid_codigo"].ToString());
                        this.cli_tipo_pessoa = tab.Rows[0]["cli_tipo_pessoa"].ToString();
                        this.cli_telefone = tab.Rows[0]["cli_telefone"].ToString();
                        this.cli_celular = tab.Rows[0]["cli_celular"].ToString();
                        this.cli_calJuros = tab.Rows[0]["cli_calJuros"].ToString();
                        this.cli_limiteCredito = Double.Parse(tab.Rows[0]["cli_limiteCredito"].ToString());
                        this.cli_limiteMensal = Double.Parse(tab.Rows[0]["cli_limiteMensal"].ToString());
                        this.cli_data_fundacao = dataFundacao;
                    }
                }
                objDAL = null;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public DataTable localizarComRetorno(String descricao, String atributo)
        {
            try
            {
                DataTable tab;
                objDAL = new ClienteDAL();
                tab = objDAL.localizar(descricao, atributo);
                objDAL = null;
                return tab;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public DataTable localizarEmTudo(String descricao, String tipoPessoa)
        {
            try
            {
                DataTable tab;
                objDAL = new ClienteDAL();
                tab = objDAL.localizarEmTudo(descricao,tipoPessoa);
                objDAL = null;
                return tab;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void localizarPrimeiroUltimo(String descricao)
        {
            try
            {
                DataTable tab = null;
                int codigo=0;
                objDAL = new ClienteDAL();
                tab = objDAL.localizarPrimeiroUltimo(descricao);
                if (tab.Rows.Count > 0)
                    int.TryParse(tab.Rows[0][0].ToString(),out codigo);
                this.cli_codigo = codigo;
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }

        }

        public void localizarProxAnterior(String descricao, int codigo)
        {
            try
            {
                DataTable tab = null;
                objDAL = new ClienteDAL();
                tab = objDAL.localizarProxAnterior(descricao, codigo);
                if (tab.Rows.Count > 0)
                    this.cli_codigo = int.Parse(tab.Rows[0][0].ToString());
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }
        }
    }
}
